The bandwidth utilized by a TCP session is primarily regulated by the TCP protocol itself. The protocol employs a number of techniques to self-limit the bandwidth it consumes, one of which is Window Size Advertisements. In the header of every packet sent on a TCP connection, the sending host includes the current size of its Receive Window in bytes. This value reflects the number of bytes available at the host to store incoming session data. The TCP peer at the other end of the connection is responsible for limiting the amount of data it transmits such that the total number of unacknowledged bytes in transit is less than or equal to this advertised Receive Window. This mechanism is intended to guarantee that a transmitting host never overflows the receive buffers of its peer.
The Receive Window field in the TCP header is 16 bits wide allowing for a maximum advertised Receive Window size of 64K. To achieve Receive Window sizes greater than 64K, a host may include a Window Scale Option in the initial “SYN” packet sent during session initiation to “scale up” all advertised Receive Window values. The Window Scale Option is a value between 0 and 14 and represents a power of 2 multiplier to the Receive Window. This option allows hosts to advertise a Receive Window size of up to 64K*214=1 Gigabyte.
Consumer broadband connections are usually long fat pipes (LFPs)—high bandwidth TCP connections. These LFPs, which may comprise multiple channels ‘bonded’ together to carry program information for a single stream, typically have with large round-tip delays. With LFPs, a host's advertised Receive Window often unnecessarily limits the overall session bandwidth. Once a connection is established over an LFP, a transmitting host will typically source a Receive Window's worth of data into the network and halt transmission while the data propagates through the LFP to the receiver. The transmitter will not resume transmission until a TCP ACK containing a new Receive Window advertisement is received from its peer. This on-again, off-again behavior at the transmitter severely reduces overall session throughput. One remedy for poor LFP performance is to use the Window Scale Option at the receiving host to advertise a larger Receive Window to the transmitter. The increase in advertised Receive Window size accounts for the in-flight data propagating over the LFP and allows the transmitter to source more data into the network before halting transmission. The resulting reduction in the transmitters “off time” increases the connection throughput.
Enabling the Window Scale Option on a PC is not a straightforward process and is beyond the capabilities of the average broadband subscriber. Thus, there is a need in the alt for a method and system for automatically adjusting the receive window size over a broadband network.